package org.mogu.control;
import org.mogu.R;
import org.mogu.staticvalue.Convert;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.drawable.BitmapDrawable;
import android.util.AttributeSet;
import android.view.View;
import android.widget.LinearLayout;


/*
 * 自定义的好友主界面中头部份中最近联系，好友主界面，群切换
 * @author androidSource@139.com
 * */
public class CustomedTabWidget extends LinearLayout{
	  public View localView = null;//当前选择的视图
	  public Rect choiceRect = null;//选择区域
	  public BitmapDrawable choiceBitmapDrawable = null;//选择时的图像资源
	  private Activity mActivity;//表示当前所属的activity
	  public View.OnClickListener mRectClickListenter = null;//点击事件监听器
	  /*
	   * 构造函数
	   * */
	  public CustomedTabWidget(Context paramContext){
	    this(paramContext, null);
	    
	    mActivity = (Activity)paramContext;
	  }
	
	  /*
	   * 构造函数
	   * paramAttributeSet--布局文件参数
	   * */
	  public CustomedTabWidget(Context paramContext, AttributeSet paramAttributeSet){
	    super(paramContext, paramAttributeSet);
	    mActivity = (Activity)paramContext;
	    
	    //创建选择区域
	    Rect localRect1 = new Rect();
	    choiceRect = localRect1;
	    
	    //创建点击事件监听器
	    mRectClickListenter = new RectClick(this);
	    
	    //创建选择时的图像资源
	    Bitmap localBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.topbar_select);
	    BitmapDrawable localBitmapDrawable = new BitmapDrawable(localBitmap);
	    choiceBitmapDrawable = localBitmapDrawable;
	  }
	
	  /*
	   * 切换当期显示的视图
	   * 参数1--选择的视图
	   * 参数2--当前显示的视图
	   * 
	   * */
	  public void changeView(View choiceView, View localView){
		  if (choiceView != null){
			 //更新当前显视图的选择状态 
			 if(localView != null){
				 localView.setSelected(false);//设置当前视图的选择状态为false
		     }
			 
			 //参数为--选择的视图区域,getHitRect(Rect rect)当前选择状态
	         choiceView.getHitRect(choiceRect);
	         choiceView.setSelected(true);//设置当前视图的选择状态为true
	         //保存当前视图
	         this.localView = choiceView;
		  }
	  }
	  
	  /*
	   * 重写了绘图函数
	   * */
	  @Override
	  protected void onDraw(Canvas paramCanvas){
		    super.onDraw(paramCanvas);
		    
		    /*
		     * 绘制选择时的图像资源
		     * */
		    BitmapDrawable localBitmapDrawable = choiceBitmapDrawable;
		    //设置图像资源的具体位置
		    localBitmapDrawable.setBounds(choiceRect);
		    //绘制图像资源
		    choiceBitmapDrawable.draw(paramCanvas);
	  }
	
	  /*
	   * 根据资源ID来切换显示
	   * */
	  public void changeViewByResid(int paramInt){
		   //根据id来获取需要显示的视图
		  	View choiceView = getChildAt(paramInt);
		    //更新当前显视图的选择状态 
		    if (choiceView != null){
		    	choiceView.setSelected(true);//设置当前视图的选择状态为false
		    }
		    //切换显示视图
		    changeView(choiceView, localView);
	  }
	  
	  /*
	   * 重写了布局函数
	   * */
	  protected void onLayout(boolean paramBoolean, int paramInt1, int paramInt2, int paramInt3, int paramInt4){
		    super.onLayout(paramBoolean, paramInt1, paramInt2, paramInt3, paramInt4);
		    int l = 0;
		    //循环此布局文件，添加事件监听器
		    while (true){
		      //获取子视图个数
		      int i1 = getChildCount();
		      if (l >= i1)
		        break;
		      
		      //获取子视图
		      View localView = getChildAt(l);
		      //子视图添加点击事件监听器
		      localView.setOnClickListener(mRectClickListenter);
		      //索引增1
		      l += 1;
		    }
		    //1--表示视图下标号，1在此处为好友主界面
		    changeViewByResid(Convert.IM_Init_tab);
	  }
}